<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        //默认参数: 如果没有参数,会按照默认参数来赋值,如果有参数,按照参数来赋值
        //解构赋值
        // let [a, b, c = 5] = [1, 2, 3];
        // console.log(c); //3

        // function fn([a, b = 5]) {
        //     console.log(a, b); //1,2
        // }
        // fn([1, 2])


        //ES5默认参数 存在缺陷,传入参数 空串 和 0 时有问题
        // function fn(a, b) {
        // var a = a || 1;
        // var b = b || 2;
        //     console.log(a, b); // 1   2
        // }
        // fn("", 0);


        //ES6 默认参数
        // function fn(a, b) {
        //     console.log(a, b);
        // }
        // fn(3, 4);// 3 4
        // fn(); // undefined  undefined
        // fn("", 0) // 0

        //短路运算符
        function fn(cb) {
            if (cb) {
                cb()
            }
            cb && cb(); // 短路运算符
        }
        fn(function () {
            console.log(123); // 123
        })

        //如果最后一个参数是 函数,那么就执行这个函数,如果不是函数就不执行
        function myanimate() {
            let arg = arguments[arguments.length - 1];
            if (typeof arg === "function") {
                arg && arg();
            }
        }
        myanimate(1, 3, function () {
            console.log("111"); // 111
        })
    </script>

</body>

</html>